package com.qianfeng1.day7_连接池.jdbc.druid;


import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;

import java.io.InputStream;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

/**
 * 作者：黎杭
 * 日期：2020/2/18
 */
public class Test3 {

    public static void main(String[] args) throws Exception {

        DruidDataSource druidDataSource = new DruidDataSource();

        Properties properties = new Properties();// 创建一个属性文件类对象
        // 1传统做法：这样做虽然是可以实现，但是以但 项目发布的时候，或者运行环境发生变化，那么这个配置文件就无法读取！
//        FileInputStream fileInputStream = new FileInputStream(new File("T:\\2020年春逆战\\db.properties"));
        // 问题是现在如何读取resources下面的文件？
        // 用反射
        InputStream resourceAsStream = Test3.class.getClassLoader().getResourceAsStream("db.properties");
//        String path = Test3.class.getClassLoader().getResource("db.properties").getFile();// 获取当前文件的绝对路径字符串
//        File f=new File(path);

        properties.load(resourceAsStream);// 加载属性文件是需要一个InputStream。

        System.err.println(properties);
        druidDataSource.configFromPropety(properties);// 从属性文件去获取连接配置信息
        DruidPooledConnection connection = druidDataSource.getConnection();
        String sql = "select * from user";// 注意：珍惜使用*的sql语句。因为在后面，禁止再出现*，出现*罚款200起
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();// 执行查询语句
        while (resultSet.next()) {
            int userId = resultSet.getInt(1);
            String name = resultSet.getString(2);
            int age = resultSet.getInt(3);
            String phone = resultSet.getString(4);
            String pwd = resultSet.getString(5);
            System.err.println(userId);
            System.err.println(name);
            System.err.println(age);
            System.err.println(phone);
            System.err.println(pwd);
        }
    }
}
